package com.ssy.lingxi.marketing.service;

import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.marketing.api.model.request.GoodsSalesReq;
import com.ssy.lingxi.marketing.api.model.response.CartGiveResponse;
import com.ssy.lingxi.marketing.model.dto.ActivityGoodsSubsidiaryDto;
import com.ssy.lingxi.marketing.model.dto.SubsidiaryDto;
import com.ssy.lingxi.marketing.model.vo.activity.request.ActivityGoodsSalesReq;
import com.ssy.lingxi.marketing.model.vo.activity.response.ActivityGoodsRestrictNumResp;
import com.ssy.lingxi.marketing.model.vo.activity.response.ActivityGoodsSalesResp;

import java.util.List;
import java.util.Map;

/**
 * 活动缓存服务类
 * @author ds, yzc
 * @version 2.0.0
 * @date 2021/8/19
 */
public interface IActivityGoodsCacheService {


    /**
     /**
     * 更新活动商品销量
     * @param goodsSalesReq
     * @return 操作结果
     **/
    Wrapper<Void> updateGoodsSales(GoodsSalesReq goodsSalesReq);

    /**
     * 查询活动sku总销量、会员总购买数量
     * @param salesReq
     * @return
     */
    ActivityGoodsSalesResp getGoodsSale(ActivityGoodsSalesReq salesReq);

    /**
     * 查询活动商品销量列表
     * @param activityId
     */
    void getActivityGoodsSale(Integer belongType,Long activityId);

    /**
     * 查询活动商品限购数量
     * @param activityIds
     * @param skuIds
     * @return
     */
    Map<String, ActivityGoodsRestrictNumResp> getActivityGoodsRestrictNum(List<Long> activityIds, List<Long> skuIds);

    /**
     * 查询sku参与换购活动商品的阶梯条件
     * @param belongType
     * @param activityId
     * @param skuId
     * @param subSkuId
     * @return
     */
    List<ActivityGoodsSubsidiaryDto> selectSkuSwapActivityLadder(Integer belongType, Long activityId, Long skuId, Long subSkuId);

    /**
     * 查询sku参与赠送活动的赠商品
     * @param belongType
     * @param activityId
     * @param skuId
     * @return
     */
    List<CartGiveResponse> selectSkuGiveProductList(Integer belongType, Long activityId, Long skuId);

    /**
     * 查询sku参与赠送活动的赠优惠券
     * @param belongType
     * @param activityId
     * @param skuId
     * @return
     */
    List<CartGiveResponse> selectSkuGiveCouponList(Integer belongType, Long activityId, Long skuId);

    /**
     * 查询sku参与套餐活动的搭配商品列表
     * @param belongType
     * @param activityId
     * @param skuId
     * @param groupNo
     * @return
     */
    List<SubsidiaryDto> selectSkuSetMealList(Integer belongType, Long activityId, Long skuId, Integer groupNo);
}
